
public class 顺子日期 {
    static int year=2022,month=1,day=1;
    static int days[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};//注意2月
    public static void main(String[] args) {
        //手写日期模拟器自动生成下一个日期
        Scanner scan = new Scanner(System.in);
        int count = 0;//顺子日期的个数
        while(year!=2023) {
            if(check()) {//判断是否满足顺子日期
                count++;
            }
            day++;
            if(month==2) {
                //闰年29天特殊考虑
                if(year%400==0||(year%4==0&&year%100!=0)) {
                    if(day>29) {
                        month++;
                        day=1;
                    }
                }else {
                    if(day>28) {
                        month++;
                        day=1;
                    }
                }
            }else {
                if(day>days[month]) {//day超过了本月的天数范围
                    month++;
                    day=1;
                }
            }

            if(month==13) {//month超过了12
                year++;
                month=1;
            }
        }
        System.out.print(count);
    }
    //判断是否满足顺子日期
    private static boolean check() {
        //数字形式
        int num = 0;
        num += year;
        num =num*100+month;
        num =num*100+day;
        //转为字符串的形式
        String string = String.valueOf(num);
        //正式开始判断：思路如果后面一个字符是前面字符+1那么就step++，直到step到3
        int step = 1;
        for(int i =1;i<string.length();i++) {
            if(string.charAt(i-1)+1==string.charAt(i)) {
                step++;
            } else {
                step=1;//不是顺子重新开始
            }
            //如果step到3就是顺子日期
            if(step==3) {
                return true;
            }
        }
        return false;
    }
}

//方法2：java自带的日期函数
//public class 顺子日期 {
//	public static void main(String[] args) {
//		String [] seq = {"012","123"};//day不可能为4-9
//		Calendar calendar = Calendar.getInstance();
//		calendar.set(2022, 0,1);//为什么月要初始化为0：这里相当于一个bug，这个函数月就是从0开始的
//		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");//规范日期的写法
//		int count = 0;
//		//开始统计顺子日期的数目
//		while(calendar.get(calendar.YEAR)==2022) {//取出calendar中的年份
//			String date = sdf.format(calendar.getTimeInMillis());//让date规范为yyyyMMdd
//			//遍历字符串看有没有这个可能存在的顺子
//			for(String s:seq) {
//				if(date.contains(s)) {
//					count++;
//					break;//有两个顺子也算一个日期，count只能加一次
//				}
//			}
//			calendar.add(calendar.DATE, 1);//日期+1
//		}
//		System.out.print(count);
//
//	}
//}
